package pe.com.empresa.servicios.impl;

import java.util.List;

import pe.com.empresa.datos.dao.PersonaNaturalMapper;
import pe.com.empresa.datos.dao.UsuarioMapper;
import pe.com.empresa.datos.dominio.ConsultaRolesPorUsuario;
import pe.com.empresa.datos.dominio.ConsultaRolesPorUsuarioCriteria;
import pe.com.empresa.datos.dominio.ConsultarPermisosPorRol;
import pe.com.empresa.datos.dominio.ConsultarPermisosPorRolCriteria;
import pe.com.empresa.datos.dominio.PersonaNatural;
import pe.com.empresa.datos.dominio.Usuario;
import pe.com.empresa.datos.dominio.UsuarioExample;
import pe.com.empresa.servicios.servicio.IniciarSesionService;
import pe.com.empresa.utiles.ServiceHelper;

public class IniciarSesionServiceImpl extends ServiceHelper implements
		IniciarSesionService {

	@Override
	public Usuario validarUsuario(Usuario obj) throws Exception {

		// obtenemos el mapper
		UsuarioMapper mapper = session.getMapper(UsuarioMapper.class);

		// creamos el example y ejecutamos la query
		UsuarioExample example = new UsuarioExample();
		example.createCriteria()
				.andNombreUsuarioEqualTo(obj.getNombreUsuario());
		List<Usuario> usuarios = mapper.selectByExample(example);

		// preguntamos si encontro el usuario
		if (!usuarios.isEmpty()) {
			Usuario usuarioResult = usuarios.get(0);
			// preguntamos si las claves son iguales
			if (usuarioResult.getClaveUsuario().equals(obj.getClaveUsuario())) {
				return usuarioResult;
			}
		}
			
		return null;
		
	}

	@SuppressWarnings("unchecked")
	public List<ConsultaRolesPorUsuario> consultarRoles(Integer idUsuario) throws Exception {

		ConsultaRolesPorUsuarioCriteria criteria = new ConsultaRolesPorUsuarioCriteria();
		criteria.setIdUsuario(idUsuario);
		List<ConsultaRolesPorUsuario> roles = (List<ConsultaRolesPorUsuario>) this.selectByCriteria("ConsultaRolesPorUsuario", criteria);
		return roles;
		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<ConsultarPermisosPorRol> consultarPermisos(Integer idRol) throws Exception {
		ConsultarPermisosPorRolCriteria criteria = new ConsultarPermisosPorRolCriteria();
		criteria.setIdRol(idRol);
		List<ConsultarPermisosPorRol> permisos = (List<ConsultarPermisosPorRol>) this.selectByCriteria("ConsultarPermisosPorRol", criteria);
		return permisos;
	}

	@Override
	public PersonaNatural obtenerPersona(Integer idPersona) throws Exception {
		// TODO Auto-generated method stub
		PersonaNatural persona = null;
		persona = (PersonaNatural) this.selectByPrimaryKey(PersonaNaturalMapper.class, idPersona);
		return persona;
	}

}
